package com.demo.mapper;


import com.demo.entity.UserEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper // 表示这是一个接口，不需要具体的实现过程，这个是要和xml文件对应起来的
        // 这个注解表示把接口托管给 项目
public interface UserMapper {


    public List<UserEntity> getAllUserinfo();

    // 根据id 来查询到user对象
    public UserEntity getUserById(@Param("uid") Integer id);  // 相当于是重命名了

    // 根据用户名 来查询到user对象
    public UserEntity getUserByName(@Param("username")String username);

    // 修改密码
    // 默认返回的是修改的行数（也就是受影响的行数）
    int updatePassword(@Param("id")Integer id ,
                       @Param("password")String password,
                       @Param("newPassword")String newPassword
                       );

    // 删除用户
    // 默认返回的也是修改的行数（也就是受影响的行数）
    int deleteById(@Param("id")Integer id);


    // 添加用户
    // 应该传递两个参数：用户名和密码 还是对象呢？
    // 答案是对象，因为方面后面的维护 (如果后面添加新的字段，传递对象的 只需要修改实体类就行了，
    //  传递两个参数的，那么所有调用链就都需要修改添加新的参数，比较麻烦)
    int addUser(UserEntity user);

    // 添加用户并获取到用户的主键id
    int addUserGetId(UserEntity user);

    // 模糊查询like
    // 根据用户名模糊查询
    List<UserEntity> getListByName(@Param("username") String username);
}
